package com.algaworks.cursojsf2.financeiro.view;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;

import com.algaworks.cursojsf2.financeiro.model.Lancamento;
import com.algaworks.cursojsf2.financeiro.repository.Lancamentos;
import com.algaworks.cursojsf2.financeiro.service.GestaoLancamentos;
import com.algaworks.cursojsf2.financeiro.service.RegraNegocioException;
import com.algaworks.cursojsf2.financeiro.util.FacesUtil;
import com.algaworks.cursojsf2.financeiro.util.Repositorios;

@ManagedBean
public class ConsultaLancamentoBean {
	private Repositorios repositorios = new Repositorios();
	private List<Lancamento> lancamentos = new ArrayList<Lancamento>();
	private Lancamento lancamentoSelecionado;

	@PostConstruct
	public void inicializar() {

		Lancamentos lancamentos = this.repositorios.getLancamentos();

		this.lancamentos = lancamentos.todos();

	}

	public List<Lancamento> getLancamentos() {
		return lancamentos;
	}

	public Lancamento getLancamentoSelecionado() {
		return lancamentoSelecionado;
	}

	public void setLancamentoSelecionado(Lancamento lancamentoSelecionado) {
		this.lancamentoSelecionado = lancamentoSelecionado;
	}

	public void excluir() {

		GestaoLancamentos gestaoLancamentos = new GestaoLancamentos(
				this.repositorios.getLancamentos());

		try {
			
			gestaoLancamentos.excluir(this.lancamentoSelecionado);
			this.inicializar();

			FacesUtil.adicionarMensagem(FacesMessage.SEVERITY_INFO,
					"Lancamento excluído com sucesso!");
			
		} catch (RegraNegocioException e) {

			FacesUtil.adicionarMensagem(FacesMessage.SEVERITY_ERROR,
					e.getMessage());
			
		}
		
	}

}
